#include <stdio.h>
#include"parser.h"
#include "interpreter.h"
//#include"gc.h"


//void displayCodes(Codes *code){
//    Codes *tmp = code;
//    while(tmp  != NULL){
//        switch(tmp->inst){
//            case I_NIL:
//                printf("NIL ");
//                break;
//            case I_CONS:
//                printf("CONS ");
//                break;
//        case I_ADD:
//            printf("ADD ");
//            break;
//        case I_LDI:
//            printf("LDI %d ",tmp->constant.ival);
//            break;
//        }
//        tmp = tmp->next;
//    }
//}

int main(void)
{
//    SecdVM  *vm = new SecdVM();
//    Codes *start = makeNil();
//    start->next = makeLdi(10);
//    start->next->next = makeCons();
//    start->next->next->next = makeLdi(20);
//    start->next->next->next->next = makeCons();
//    start->next->next->next->next->next = makeAdd();
//    start->next->next->next->next->next->next = makeStop();
//    displayCodes(start);
//    vm->run(start);
//    displayValue(vm->Stack->top());
    Parser *p = new Parser();
    Value *v = p->parse("(+ 1 1)");
    Interpreter interp = new Interpreter();
    Value *ret = interp->run(v);
    return 0;
}

